<?php
/**
 * 日志类 
 */
namespace Org\Util;

class Loger {
    // 项目名称
    public static $project_name = 'project_default';
    // 操作名称
    public static $operate_name = 'operate_default';
    // 方法名
    public static $action_name = 'action_default';
    // 调试类型常量
    const LOG_TYPE_DEBUG = 'debug';
    // 错误类型常量
    const LOG_TYPE_ERROR = 'error';
    // 成功类型常量
    const LOG_TYPE_SUCCE = 'succe';
    // 消息内容分隔符
    const MESSAGE_DELIMITER = ';';
    /**
     * 写日志
     *
     * @param  array    $message
     * @param  string  $type
     *
     * @return void
     */
    public static function write($message,$type = self::LOG_TYPE_ERROR) {
        try {
            // 时间
            $datetime = date("Y-m-d H:i:s");
            // 请求端IP
            $clientip = get_client_ip();
            // 消息内容
            $messagestr = '';
            if($message && is_array($message)) {
                foreach ($message as $key => $value) {
                    is_array($value) && $value = json_encode($value,JSON_UNESCAPED_UNICODE);
                    $messagestr .=  $key . ":" . $value . self::MESSAGE_DELIMITER;
                }
            }
            $messagestr = trim($messagestr,self::MESSAGE_DELIMITER);

            $messagestr = MODULE_NAME . " | " . CONTROLLER_NAME . " | " . ACTION_NAME . " | " . $type . " | " . $clientip . " | " . $datetime . " | " . $messagestr . "\n";
            // 记录日志
            file_put_contents('/tmp/php_log',$messagestr,FILE_APPEND);
        }catch (\Exception $e) {
            error_log(date('Y-m-d H:i:s') . ' ' . $e->getMessage() . '[' . $e->getFile() . '|' . $e->getLine() . '|' . $e->getCode() . ']');
        }
    }
    /**
     * 记录错误日志 
     *
     * @param  array    $message
     *
     * @return void
     */
    public static function error($message) {
        self::write($message,self::LOG_TYPE_ERROR);
    }
    /**
     * 记录成功日志 
     *
     * @param  array    $message
     *
     * @return void
     */
    public static function success($message) {
        self::write($message,self::LOG_TYPE_SUCCE);
    }
    /**
     * 记录调试日志 
     *
     * @param  array    $message
     *
     * @return void
     */
    public static function debug($message) {
        self::write($message,self::LOG_TYPE_DEBUG);
    }
}
?>
